#ifndef GRAPHITEMOBJECT_H
#define GRAPHITEMOBJECT_H

#include <QGraphicsObject>
#include <QGraphicsSceneMouseEvent>
#include <QPainter>
#include <QDebug>
#include "mera.h"

/*!
 * \brief GraphItemObject class Отвечает за отрисовку данных из файлов формата MERA
*/
class GraphItemObject : public QGraphicsObject
{
    Q_OBJECT
public:
    explicit GraphItemObject(QGraphicsItem *parent = nullptr);

    // QGraphicsItem interface
    QRectF boundingRect() const;
    /*!
     * \brief paint Наследуется из родительского класса. Выполняет весь функционал отрисовки
     *
     * \param[in] painter объект, выполняющий отрисовку. Перед началом отрисовки его параметры созраняются, после окончания восстанавливаются
     * \param[in] option не используется, но является аргументом родительского класса
     * \param[in] widget не используется, но является аргументом родительского класса
    */
    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
public slots:
    /*!
     * \brief updatePoints Получает данные из файла и по ним определяет координаты точек и линий на пиксельной сетке
    */
    void updatePoints();
signals:    


    // QGraphicsItem interface
protected:
    void mousePressEvent(QGraphicsSceneMouseEvent *event);

private:
    QColor m_color;
    int m_paintCount;
    vector<double> min_values;
    vector<double> max_values;
    vector<vector<bool>> points;

    int pixels_width;
    int cell_size;
    double mult_x;
    double mult_y;
    double shift_x;
    double shift_y;
};

#endif // GRAPHITEMOBJECT_H
